AWS PrivateLink・VPCエンドポイントを利用するメリットやユースケースを整理してみた
ちゃだいん(@chazuke4649)です。
「結局、PrivateLinkやVPCエンドポイントってどういう時に使ったらいいの?」
このような疑問から、ネットワークやセキュリティ面においてこれらサービスにどんなメリットがあるのか、ユースケースを改めて整理してみました。
先に結論
以下項目にメリットを感じる場合は、PrivateLink/VPCエンドポイント利用検討する価値があると思われます。
- 1.VPCにIGWが不要になる
- 2.VPCにNATGWが不要になる
- 3.VPC内から「特定のサービスだけ」にアクセスさせることが容易
- 4.VPCエンドポイントポリシーで細やかなアクセス制御が可能
- 5.EC2インスタンス等にパブリックIPが不要になる
- 6.オンプレからDX経由のAWSサービス利用をしたい
- 7.独自アプリケーションを社内外へプライベート公開したい(orそれを利用したい)
経緯
以前、こんなツイートが少し話題になりました。
「リージョン間通信はAWS内に留まる」 とFAQが改訂されております。https://t.co/NTLeU5o3lN
Q:2 つのインスタンスがパブリック IP アドレスを使用して通信する場合、またはインスタンスが AWS のサービスのパブリックエンドポイントと通信する場合、トラフィックはインターネットを経由しますか?— Yukihiro Kikuchi (@yukihirokikuchi) April 22, 2021
該当の公式FAQを引用します。
Q:2 つのインスタンスがパブリック IP アドレスを使用して通信する場合、またはインスタンスが AWS のサービスのパブリックエンドポイントと通信する場合、トラフィックはインターネットを経由しますか?
いいえ。パブリックアドレススペースを使用する場合、AWS でホストされているインスタンスとサービス間のすべての通信は AWS のプライベートネットワークを使用します。AWS ネットワークから発信され、AWS ネットワ>ーク上の送信先を持つパケットは、AWS 中国リージョンとの間のトラフィックを除いて、AWS グローバルネットワークにとどまります。
さらに、データセンターとリージョンを相互接続する AWS グローバルネットワークを流れるすべてのデータは、安全性が保証された施設を離れる前に、物理レイヤーで自動的に暗号化されます。すべての VPC クロスリージョンピアリングトラフィックや、カスタマーまたはサービス間のトランスポート層セキュリティ (TLS) 接続などといった追加の暗号化レイヤーもあります。 引用元) よくある質問 - Amazon VPC | AWS
つまり、基本的にはAWSサービス間の通信は、パブリックなインターネットを経由せず、AWSグローバルネットワーク内でのみ行われる。とのことです。
このドキュメントのアップデートに関する経緯や詳しい解説は、こちらのブログにてわかりやすく紹介されています。
これらを受けて、PrivateLink/VPCエンドポイントのユースケースってどんな時なんだろうと思い、現時点で思いつくものを全て洗い出してみました。過不足や誤りなどあれば、フィードバックいただけるとありがたいです。
1.VPCにIGWが不要になる
インターネット出入口であるインターネットゲートウェイ(IGW)を無くし、実質的なインターネットとの出入口を封鎖することができます。
例えばVPN等によりAmazon VPCを社内閉域網の拡張として利用し、外部インターネットとの通信が不要である場合、PrivateLink/VPCエンドポイントの利用により、必要十分なAWSサービスの利用が可能であれば、IGWを使用しないネットワーク構成が可能となります。
2.VPCにNATGWが不要になる
PrivateLink/VPCエンドポイント検討にあたり、最も比較されるのはNATゲートウェイ(NATGW)を使用する構成です。これらを使用すれば、NATGWがない構成も実現可能となります。NATGWの利用しないで済む1つ目のメリットとしてはコスト削減です。
詳細はVPCエンドポイントの点数やデータ転送料にもよりますが、単純比較できる部分だけでみると、NATGWからVPCエンドポイントに切り替えると、時間課金は無料か1/6に削減できます。詳細は以下ブログの「VPCエンドポイントの利用」を参照ください。
3.VPC内から「特定のサービスだけ」にアクセスさせることが容易
NATGWでは、VPCへのインバウンド通信は防御できるが、アウトバウンド通信を制御したい場合、かなり面倒です。NATGWにはセキュリティグループを紐付けできないため、NATGWに対してだとルートテーブルやNACLレベルでどうにかしなければいけません。もちろんNATインスタンスの利用やプロキシサーバを立てるなどする方法もありますが、その分サーバの管理コストが増えてしまいます。
その点、PrivateLink/VPCエンドポイントでは、インターフェース型VPCエンドポイントであればセキュリティグループが紐づけられられるので、例えばアウトバウンド通信を制御したいEC2インスタンスのセキュリティグループのアウトバウンドルールを指定のVPCエンドポイントのセキュリティグループIDのみ許可すれば、それ以外の通信を制御できます。
よって特定の通信先、予め許可された宛先以外の通信NGのポリシーある場合、プロキシを抱える以外の選択肢として候補に挙げられるかと思われます。
4.VPCエンドポイントポリシーで細やかなアクセス制御が可能
上記以外にも、多くのVPCエンドポイントはエンドポイントポリシーをサポートしているため、より細やかなアクセス制御が実現できます。
ただし一部サービスは未サポートのため、その点注意です。
AWS PrivateLink と統合する AWS のサービス - Amazon Virtual Private Cloud
エンドポイントポリシーについては、以下のブログが分かりやすいです。
5.EC2インスタンス等にパブリックIPが不要になる
AWSサービスとの通信のためにEC2インスタンスにパブリックIPが必要である場合、PrivateLink/VPCエンドポイントを利用すればEC2インスタンスにはパブリックIPのアタッチが不要にできます。ただし、これはNATGW利用でも解決できます。
6.オンプレからDX経由のAWSサービス利用をしたい
例えば、オンプレからDirectConnect(DX)経由でS3を利用したい場合に、PrivateLinkだけで通信できるようになりました。(ただし同じDXでもPublicVIFを利用すれば、PrivateLinkなしにAWSサービスの利用が可能ですが、かなり稀なケースであるため、今回はDXの利用=PrivateVIFという前提とはなります)
本内容については、以下ブログが分かりやすいです。
7.独自アプリケーションを社内外へプライベート公開したい(orそれを利用したい)
独自アプリケーションを独自エンドポイント(PrivateLink)を利用し、社内外へプライベート公開できるのもPrivateLinkの魅力の一つです。逆も然りで、利用者側として、マーケットプレイスにて提供されているサードパーティのPrivateLinkを利用することも可能です。
関連記事は以下となります。
【新機能】PrivateLinkで独自エンドポイントを作ってアプリをプライベート公開する #reinvent | DevelopersIO
[新機能] PrivateLinkの公開サービスにプライベートDNS名が指定可能になりました | DevelopersIO
おまけ)無理にPrivateLink/VPCエンドポイントを使わなくてもいい場合
- 以上挙げたメリットやユースケースに当てはまらない
- シンプルなネットワーク構成にしたい
- NATGW廃止と引き換えに、作成するVPCエンドポイントの数が多すぎる・複雑すぎる
- AWSサービス間の通信がインターネットを介さなければそれで十分
様々なメリットがあるPrivateLink/VPCエンドポイントですが、オーバーデザインである場合もあります。上記項目にピンとくる場合は、一度通信要件を整理してみることをオススメします。
終わりに
改めて、PrivateLink/VPCエンドポイントのメリット・ユースケースを整理してみました。(構成図ないと分かりづらいよなぁと思いつつ、ちょっと体力が尽きたので追って更新したいと思います...)
それではこの辺で。ちゃだいん(@chazuke4649)でした。
参考URL
AWS PrivateLink および VPC エンドポイント - Amazon Virtual Private Cloud
2つのVPCエンドポイントの違いを知る | DevelopersIO
[レポート] NET301: AWS PrivateLinkのベストプラクティス #reinvent | DevelopersIO
Network FirewallとNAT Gatewayを使えば、VPCエンドポイントは不要なのか検証してみた | DevelopersIO